import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Arrays;

public class TwoSumSolution {

    /**
     * 找出数组中和为目标值的两个数的下标
     * @param nums 输入的整数数组
     * @param target 目标值
     * @return 包含两个下标的整数数组
     * @throws IllegalArgumentException 如果找不到解
     */
    public static int[] twoSum(int[] nums, int target) {
        // 创建一个 HashMap，Key 存储数组中的值，Value 存储该值的下标
        Map<Integer, Integer> map = new HashMap<>();

        // 遍历数组
        for (int i = 0; i < nums.length; i++) {
            // 计算需要匹配的另一个数
            int complement = target - nums[i];

            // 检查 HashMap 中是否存在这个匹配数
            if (map.containsKey(complement)) {
                // 如果存在，返回匹配数的下标和当前数的下标
                return new int[]{map.get(complement), i};
            }

            // 如果不存在，将当前数和它的下标存入 HashMap
            // Key 是数字本身，Value 是它的下标
            map.put(nums[i], i);
        }

        // 如果遍历完都没有找到（根据题目描述，这种情况不会发生）
        throw new IllegalArgumentException("没有找到符合条件的两个数");
    }

    /**
     * 主函数，用于接收用户输入并展示结果
     */
    public static void main(String[] args) {
        // 使用 try-with-resources 确保 Scanner 被正确关闭
        try (Scanner scanner = new Scanner(System.in)) {
            // 1. 获取用户输入的数组
            String line = scanner.nextLine();

            // 将输入的字符串按空格分割，并转换为整数数组
            String[] numbersStr = line.split("\\s+");
            int[] nums = new int[numbersStr.length];
            for (int i = 0; i < numbersStr.length; i++) {
                nums[i] = Integer.parseInt(numbersStr[i]);
            }

            // 2. 获取用户输入的目标值
            int target = scanner.nextInt();

            // 3. 调用方法并打印结果
            try {
                int[] result = twoSum(nums, target);
                System.out.println(Arrays.toString(result));
            } catch (IllegalArgumentException e) {
                System.out.println(e.getMessage());
            }

        } catch (Exception e) {
            System.out.println("输入格式错误，请确保输入正确。错误信息: " + e.getMessage());
        }
    }
}